return {
    {
        "MagicDuck/grug-far.nvim",
        cond = false,
        keys = {
            { "<leader>sr", "<cmd>:GrugFar<cr>", desc = "全局搜索替换" },
        },
        config = function()
            require("grug-far").setup {}
        end,
    },
    {
        "windwp/nvim-spectre",
        event = { "BufReadPost" },
        dependencies = { "nvim-lua/plenary.nvim" },
        keys = {
            {
                "<leader>sr",
                function()
                    require("spectre").toggle()
                end,
                desc = "全局搜索替换",
            },
        },
        config = function()
            local spectre = require "spectre"
            spectre.setup {
                open_cmd = "vnew", -- can also be a lua function
                live_update = true, -- auto execute search again when you write to any file in vim
                lnum_for_results = true, -- show line number for search/replace results
                mapping = {
                    ["run_current_replace"] = {
                        map = "<leader><leader>",
                        cmd = "<cmd>lua require('spectre.actions').run_current_replace()<CR>",
                        desc = "替换当前行",
                    },
                },
            }
        end,
    },
}
